package riviere;

import java.awt.Button;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Debut extends JFrame {

	private static final long serialVersionUID = 1L;
	private TextField tfPointDebutX, tfPointDebutY, tfPointDebutHauteur, tfPointFinX, tfPointFinY,
			tfPointFinHauteur;
	private Label labelPointDebutX, labelPointDebutY, labelPointDebutHauteur, labelPointFinX,
			labelPointFinY, labelPointFinHauteur, labelLongueurTotal;
	private Button btAjout;

	public static void main(String[] args) {
		new Debut();
	}

	public Debut() {
		final Riviere maRiviere = new Riviere();

		JPanel p = new JPanel(new GridLayout(7, 2));

		labelPointDebutX = new Label("Coordonnées X du point de début");
		labelPointDebutY = new Label("Coordonnées Y du point de début");
		labelPointDebutHauteur = new Label("Hauteur du point de début");

		labelPointFinX = new Label("Coordonnées X du point de fin");
		labelPointFinY = new Label("Coordonnées Y du point de fin");
		labelPointFinHauteur = new Label("Hauteur du point de fin");

		labelLongueurTotal = new Label("Longueur de la rivière : ");
		labelLongueurTotal.setPreferredSize(new Dimension(200, 10));

		tfPointDebutX = new TextField(10);
		tfPointDebutY = new TextField(10);
		tfPointDebutHauteur = new TextField(10);

		tfPointFinX = new TextField(10);
		tfPointFinY = new TextField(10);
		tfPointFinHauteur = new TextField(10);

		btAjout = new Button("Ajouter le point");
		btAjout.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				if (tfPointDebutX.getText().equals("") == false
						&& tfPointDebutY.getText().equals("") == false
						&& tfPointDebutHauteur.getText().equals("") == false
						&& tfPointFinX.getText().equals("") == false
						&& tfPointFinY.getText().equals("") == false
						&& tfPointFinHauteur.getText().equals("") == false) {
					try {
						Point deb = new Point(Double.parseDouble(tfPointDebutX.getText()), Double
								.parseDouble(tfPointDebutY.getText()), Double
								.parseDouble(tfPointDebutHauteur.getText()));
						Point fin = new Point(Double.parseDouble(tfPointFinX.getText()), Double
								.parseDouble(tfPointFinY.getText()), Double
								.parseDouble(tfPointFinHauteur.getText()));
						Segment monSeg = new Segment(deb, fin);
						maRiviere.getSegments().add(monSeg);

						double d = (double) Math.round(maRiviere.calculerLongueur() * 100) / 100;

						labelLongueurTotal.setText("Longueur de la rivière : " + d);
					} catch (NumberFormatException e1) {
						JOptionPane.showMessageDialog(null,
								"attention, vous devez mettre des nombres");
					}
				} else
					JOptionPane.showMessageDialog(null,
							"attention, un ou plusieurs champs ne sont pas remplis");
			}
		});

		p.add(labelPointDebutX);
		p.add(tfPointDebutX);
		p.add(labelPointDebutY);
		p.add(tfPointDebutY);
		p.add(labelPointDebutHauteur);
		p.add(tfPointDebutHauteur);

		p.add(labelPointFinX);
		p.add(tfPointFinX);
		p.add(labelPointFinY);
		p.add(tfPointFinY);
		p.add(labelPointFinHauteur);
		p.add(tfPointFinHauteur);

		p.add(btAjout);
		p.add(labelLongueurTotal);

		this.add(p);

		this.setVisible(true);
		this.setTitle("Création d'une rivière");
		this.setSize(500, 600);
	}
}
